home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tech Arsenal 1
/
Tech Arsenal (Arsenal Computer).ISO
/
tek-02
/
prodpack.zip
/
DB4PPSRC.EXE
/
COMPIT.PRG
< prev
next >
Wrap
Text File
|
1993-05-11
|
5KB
|
218 lines
PROCEDURE CompIt
PARAMETERS pcPara1, pcPara2, pcPara3
*----------------------------------------------------------------------------
* NAME
* CompIt - Compile .PRG files with a Make utility
*
* DESCRIPTION
*
* PARAMETERS
* pcPara1 =
* pcPara2 =
* pcPara3 =
*
* DEPENDENCIES
* Uses: _WhatPara(), _FileRoot()
*
*----------------------------------------------------------------------------
SET SAFETY OFF
SET TALK OFF
SET STATUS OFF
SET FULLPATH ON
SET EXACT ON
SET PATH TO \test\ccppdbb\dbos, \test\ccppdbb\prgs, \test\ccppprgs\dbos, \test\ccppprgs\prgs
IF LEFT( OS(), 3 ) = "DOS"
lc_slash = "\"
ELSE
lc_slash = "/"
ENDIF
cDboDir = ""
cPrgDir = ""
cPrg2Comp = ""
cCurDir = SET( "DIRECTORY" )
*-- Scan arguments
nArgs = PCOUNT()
n = 1
DO WHILE n <= nArgs .AND. n <= 3
cnVar = STR( n, 1 )
cArg = UPPER( pcPara&cnVar. )
DO CASE
CASE LEFT( cArg, 2 ) = "-D" && DBO Directory
nComma = AT( ",", cArg )
IF nComma > 0
cDboDir = LTRIM( TRIM( SUBSTR( cArg, nComma + 1 ) ) )
ELSE
cDboDir = LTRIM( TRIM( SUBSTR( cArg, 3 ) ) )
ENDIF
IF RIGHT( cDboDir, 1 ) <> lc_Slash
cDboDir = cDboDir + lc_Slash
ENDIF
CASE LEFT( cArg, 2 ) = "-P" && PRG Directory
nComma = AT( ",", cArg )
IF nComma > 0
cPrgDir = LTRIM( TRIM( SUBSTR( cArg, nComma + 1 ) ) )
ELSE
cPrgDir = LTRIM( TRIM( SUBSTR( cArg, 3 ) ) )
ENDIF
IF RIGHT( cPrgDir, 1 ) <> lc_Slash
cPrgDir = cPrgDir + lc_Slash
ENDIF
OTHERWISE && File list of PRGs
cPrg2Comp = LTRIM( TRIM( cArg ) )
ENDCASE
n = n + 1
ENDDO
*------------------------------------------------
*-- Make sure the list of files to compile exists
*------------------------------------------------
IF ISBLANK( cPrg2Comp )
cMsg = [No files to compile. Quitting with no error.]
? cMsg
! ECHO &cMsg.
QUIT WITH 0
ENDIF
*-------------------------
*-- Validate DBO Directory
*-------------------------
IF .NOT. ISBLANK( cDboDir )
fhCheckIt = 0
fhCheckIt = FCREATE( cDboDir + "CHECHIT.OUT" )
IF fhCheckIt > 0
IF FCLOSE( fhCheckIt )
cFullPath = LEFT( cDboDir, LEN( cDboDir ) - 1 )
SET DIRECTORY TO &cFullPath
ERASE CHECHIT.OUT
cDboDir = SET( "DIRECTORY" )
SET DIRECTORY TO &cCurDir
ENDIF
ELSE
cMsg = [DBO Directory does not exist:] + cDboDir
? cMsg
! ECHO &cMsg.
QUIT WITH 1
ENDIF
ELSE
cDboDir = SET( "DIRECTORY" )
ENDIF
*-------------------------
*-- Validate PRG Directory
*-------------------------
IF .NOT. ISBLANK( cPrgDir )
fhCheckIt = 0
fhCheckIt = FCREATE( cPrgDir + "CHECHIT.OUT" )
IF fhCheckIt > 0
IF FCLOSE( fhCheckIt )
cFullPath = LEFT( cPrgDir, LEN( cPrgDir ) - 1 )
SET DIRECTORY TO &cFullPath
ERASE CHECHIT.OUT
cPrgDir = SET( "DIRECTORY" )
SET DIRECTORY TO &cCurDir
ENDIF
ELSE
cMsg = [PRG Directory does not exist:] + cPrgDir
? cMsg
! ECHO &cMsg.
QUIT WITH 1
ENDIF
ELSE
cPrgDir = SET( "DIRECTORY" )
ENDIF
*----------------------------------------------
*-- Loop through the file list and compile them
*----------------------------------------------
lAllOk = .T.
cQCode = 0
nFiles = _WhatPara( "aFiles", cPrg2Comp )
n = 1
DO WHILE n <= nFiles
*-----------------------------------------------------------
*-- Add the PRG path as needed and make sure the file exists
*-----------------------------------------------------------
IF .NOT. ISBLANK( cPrgDir )
IF .NOT. (":" $ aFiles[ n ] .OR. lc_Slash $ aFiles[ n ] )
aFiles[ n ] = cPrgDir + lc_Slash + aFiles[ n ]
ENDIF
ENDIF
IF .NOT. ( "." $ aFiles[ n ] )
aFiles[ n ] = aFiles[ n ] + ".PRG"
ENDIF
IF .NOT. FILE( aFiles[ n ] )
lAllOk = .F.
cMsg = [PRG does not exist:] + aFiles[ n ]
? cMsg
! ECHO &cMsg.
ELSE
lCompileOk = .T.
cPrg = _FileRoot( aFiles[ n ] )
? "Compiling:", aFiles[ n ] + SPACE( 40 )
?
cErrFile = cPrg + ".err"
ERASE (cErrFile )
SET ALTERNATE TO (cErrFile )
SET ALTERNATE ON
SET TALK ON
SET CONSOLE ON
ON ERROR lCompileOk = .F.
COMPILE ( aFiles[ n ] )
ON ERROR
SET ALTERNATE OFF
SET ALTERNATE TO
SET TALK OFF
SET CONSOLE OFF
IF .NOT. lCompileOk
SAVE SCREEN TO CompIt
! TYPE &cErrFile.
RESTORE SCREEN FROM CompIt
RELEASE SCREEN CompIt
lAllOk = .F.
ELSE
*-----------------------------------------
*-- Copy the dbo file to the dbo directory
*-----------------------------------------
IF cDboDir <> cPrgDir
cFullPre = aFiles[ n ]
DO _FullPre WITH cFullPre
cFullPre = cFullPre + ".DBO"
! COPY &cFullPre. &cDboDir.
ERASE ( cFullPre )
ENDIF
ENDIF
ERASE ( cErrFile )
ENDIF
n = n + 1
ENDDO
IF .NOT. lAllOk
cQCode = 1
ENDIF
QUIT WITH cQCode
*-- EOP: CompIt WITH pcPrg